package com.atguigu.DivideAndConquer;

/**
 * @author tbwtbw
 * @create 2021-11-24 16:48
 */
public class HanoiTower {
    public static void main(String[] args) {
        hanoiTower(15,'A','B','C');
    }


    //最下一块盘子为最小单位，将它直接从 A 移动到 C 去，所以可以将num块盘子
    //看成最下面一块和上面 num-1 块，把 num-1 块盘子从A -> B,再将最后一块A -> C
    //再用同样的方法把B的盘子放到C上去
    private static void hanoiTower(int num,char A,char B,char C){
        if (num == 1){//阈值
            System.out.println("第1块盘子从 "+A+" 移动到 "+C);
        }else {
            hanoiTower(num - 1,A,C,B);//C作中转
            System.out.println("第" + num + "块盘子从 " + A + " 移动到 " + C);
            hanoiTower(num - 1,B,A,C);
        }
    }
}
